Static Local Variables


Static Variables

Each time a function is called, the local variables of the function are created, used and destroy. Thus a local variable does not retain its value between function calls. For instance, if a variable is declared the function associated with the event click of a button, the variable will be created each time the button is pressed and its value will not be retained after the function returns. When the program requires retaining the value of the variable between function calls (and the variable is not being used in another function of the program) a variable can be declared as static. Problem 1 shows how to declare a static local variable that retains its value between function calls. Note that a static local variable is NOT destroyed when the function returns. In other words, a static local variable is similar to a member variable but there is no access to this variable outside the function.
Cada vez que una función se llama, las variables locales de la función son creadas, usadas y destruidas. Así una variable local no mantiene su valor entre llamadas a la función. Por ejemplo, si una variable es declarada en una función asociada con el evento de clic de un botón, la variable será creada cada vez que el botón es presionado y su valor no se mantendrá después que la función regrese. Cuando el programa requiera retener el valor de la variable entre llamadas a una función, (y la variable no es usada en otra función del programa) una variable puede ser declarada como static. El Problema 1 muestra como declarar una variable estática local que mantiene su valor entre llamadas a una función. Note que una variable local estática NO es destruida cuando la función regresa. En otras palabras, una variable estática local es similar a una variable miembro pero no hay acceso a esta variable afuera de la función.

Problem 1
Write a program called Cuenta, and insert a button that changes its text every time the button is clicked.
Escriba un programa llamada Cuenta e inserte un botón que cambia su texto cada vez que se le haga clic al botón.

Cuenta.cpp
void Cuenta::btOK_Click(Win::Event& e)
{
     static int count = 0;
     count++;
     btOK.Text = Sys::Convert::ToString(count);
}


Problem 2
What would happen in the previous problem if the keyword static is removed?
Que parasaría en el problema anterior si la palabra static se remueve?

Tip
A static variable is similar to when a person remembers something when he is in a specific place, smell something, listen to something, etc. He does not have access outside the function, but the variable retains its value.
Una variable estática es semejante a cuando nos acordamos de algo cuando estamos en un lugar específico, olemos algo, escuchamos algo, etc. No tenemos acceso a la variable fuera de la función, pero la variable retiene su valor.

© Copyright 2000-2021 Wintempla selo. All Rights Reserved. Jul 22 2021. Home